package coop.bancocredicoop.proyectos.gd.crecerxxi;

import java.util.Arrays;
import java.util.List;

import coop.bancocredicoop.proyectos.gd.domain.Customer;
import coop.bancocredicoop.proyectos.gd.query.customer.FindCustomerByIdPersona;
import coop.bancocredicoop.proyectos.gd.query.customer.InsertCustomer;

public class CrecerXXIMockWrapper implements CrecerXXIWrapper {

	public List<CrecerXXICustomer> findCustomerByIdPersona(String tipoPersona,
			Long idPersona) {

		return Arrays.asList(new CrecerXXICustomer(idPersona,
				"denominacion " + idPersona, "30" + idPersona + "3"));

	}

	public List<CrecerXXICustomer> findCustomerByCuit(String tipoPersona,
			String cuit) throws Exception {

		// Simular un error en crecerXXI
		if (cuit.equals("42")) {
			throw new Exception("ERROR-00001 ES NECESARIO INGRESAR MAS " + 
					"ARGUMENTOS PARA ACOTAR LA BUSQUEDA. SE SUPERO LA COTA MAXIMA" +
					"DE 200 REGISTROS");
		}
		return Arrays.asList(new CrecerXXICustomer(1L, "nombre A", "30000000013"),
				new CrecerXXICustomer(2L, "nombre B", "30000000023"));

	}

	public List<CrecerXXICustomer> findCustomerByNombre(String tipoPersona,
			String nombre) {

		return Arrays.asList(new CrecerXXICustomer(1L, "nombre A", "30000000013"),
				new CrecerXXICustomer(2L, "nombre B", "30000000023"));

	}

	public Customer findOrCreateCustomer(Long idPersona) throws Exception {

		Customer customer = new FindCustomerByIdPersona().run(idPersona);

		if (customer == null) {
			CrecerXXICustomer customerProperties = this.
					findCustomerByIdPersona("A", idPersona).get(0);

			Customer newCustomer = new Customer(null,
					0L,
					customerProperties.getInternalId(),
					customerProperties.getCuit(),
					customerProperties.getName());

			new InsertCustomer().run(newCustomer);

			return newCustomer;
        }

        return customer;

	}

}
